Skip to content

Restore AMD64 container builds with native runners#386

Merged
fuziontech merged 2 commits intomainfrom
ci/restore-amd64-container-build
Apr 2, 2026
Merged

Restore AMD64 container builds with native runners#386
fuziontech merged 2 commits intomainfrom
ci/restore-amd64-container-build

Conversation

@fuziontech
Copy link
Copy Markdown
Member

Summary

  • Restores linux/amd64 container image builds that were dropped in perf(ci): switch to native ARM runner, drop amd64 build #348
  • Uses native runners for each architecture instead of QEMU cross-compilation:
    • ubuntu-24.04-arm for arm64 (unchanged)
    • ubuntu-24.04 for amd64 (new)
  • Both architectures build in parallel via a matrix strategy
  • A manifest job merges per-arch images into multi-arch tags on ECR and GHCR
  • Build cache is scoped per-architecture to avoid cross-contamination
  • Deployment trigger moved to the manifest job so it fires after both arches are ready

Build flow

build (arm64) ──┐
                ├──> manifest ──> deploy trigger
build (amd64) ──┘

Why

AMD64 support is needed for local development and non-Graviton environments. The original removal (#348) was to avoid slow QEMU cross-compilation (~20min). Native runners solve this — each arch builds in ~5min natively, in parallel.

Test plan

  • CI passes (workflow syntax validation)
  • Manual workflow_dispatch to verify both arches build and manifest merges correctly
  • Verify docker manifest inspect shows both arm64 and amd64 in the multi-arch tag

🤖 Generated with Claude Code

fuziontech and others added 2 commits April 1, 2026 20:23
Brings back linux/amd64 container images using a matrix build strategy
with native runners for each architecture (no QEMU cross-compilation):

- arm64: built on ubuntu-24.04-arm (existing)
- amd64: built on ubuntu-24.04 (new)

Both architectures build in parallel, then a manifest job merges them
into multi-arch tags on ECR and GHCR. This keeps the per-arch build
fast (~5min native vs ~20min QEMU) while restoring amd64 support.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
docker manifest push prints the manifest digest to stdout. Capture it
and pass it through to the Charts deployment trigger so the deployed
image is pinned to the exact multi-arch manifest that was built.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
fuziontech added a commit to PostHog/posthog that referenced this pull request Apr 2, 2026
The duckgres container image now ships as a multi-arch manifest
(arm64 + amd64) via PostHog/duckgres#386, so the platform pin is
no longer needed and was preventing the image from running on
amd64 dev machines.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@fuziontech fuziontech requested a review from a team April 2, 2026 03:31
@fuziontech fuziontech merged commit cbb42f1 into main Apr 2, 2026
21 checks passed
@fuziontech fuziontech deleted the ci/restore-amd64-container-build branch April 2, 2026 03:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants